package com.learn.springcloud.streamquickstart.receiver;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;

/**
 * @Time : 2018/8/21 14:14
 * @Version : 1.0
 */

// @EnableBinding 用来指定一个或多个定义了@Input或@Output 注解的接口，以次实现对消息通道的绑定。
// @EnableBinding 绑定了Sink 接口，该注解是Spring Cloud Stream 中默认实现的对输入消息通道绑定的定义
@EnableBinding(Sink.class)
public class SinkReceiver {

    @Value("${spring.rabbitmq.username}")
    private String profiles;

    // @StreamListener 注解主要定义在方法上，作用是将被修饰的方法注册为消息中间件上数据流的事件监听器
    // 注解中的属性值对应了监听的消息通道名
    @StreamListener(Sink.INPUT)
    public void receive(Object payload) {
        System.out.println(profiles + " Received : " + payload);
    }

}
